#!usr/bin/env python

# -----------------------------------
# # 1、编写一个登陆接口
# # 2、用户登录三次即锁定
# -----------------------------------

import hashlib
import getpass

login_limit = 3
retry_count = 0
lock_file = 'data/user_lock.txt'
user_info = 'data/user_info.txt'


while retry_count < login_limit:
    user_name = input("请输入账号:")     # 输入用户名

    lock_check = open(lock_file)
    for line_lock_check in lock_check.readlines():     # 循环user_info.txt文件内容
        if user_name == line_lock_check.strip():       # 调用strip()函数，如果该用户已经被锁定了直接退出了，就直接退出
            print('用户 %s 因尝试登陆次数过多已被锁定!' % user_name)
            exit()

    password = getpass.getpass("请输入密码:")    # getpass方法用于隐藏输入的内容
    password = hashlib.md5(password.encode(encoding='utf-8'))
    pass_md5 = password.hexdigest()

    # --------------实现账号密码匹配部分的验证-----------------#
    f = open(user_info,'r')
    match_flag = False  # 初始值为False，如果用户match成功了，就设置为True

    for line_user_info in f.readlines():
        user,pwd = line_user_info.strip().split()   # 将user_info中每行内容分别传入user和pwd变量中
        # 判断语句是否
        if user == user_name and pwd == pass_md5:   # 判断账号密码是否匹配，如果结果为真则将结果赋值match_flag变量
            match_flag = True
            break
    f.close()
    # --------------实现账号密码匹配部分的验证-----------------#

    if match_flag == False: # 判断match_flag变量状态，如果为真True则打印登录成功，如果为False则打印账号密码错误
        print("您输入的账号密码错误，请重试")
        retry_count = retry_count + 1
    else:
        print("您已登录成功")
        exit()

print("由于重复次数过多您的账号已被锁定")
f = open(lock_file, 'a')
f.write(user_name + '\n')
f.close()
